package cn.itedus.lottery.interfaces.assembler;

import cn.itedus.lottery.domain.strategy.model.vo.DrawAwardVO;
import cn.itedus.lottery.rpc.dto.AwardDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;

/**
 * 对象转换配置
 */
//@Mapper要执行 MapStruct 相关操作的类
//componentModel 属性用于指定自动生成的接口实现类的组件类型,为spring 生成的实现类上面会自动添加一个@Component注解，可以通过@Autowired注入
//unmappedTargetPolicy = ReportingPolicy.IGNORE  比如从DrawAwardVO 转换到 AwardDTO ，如果AwardDTO有某属性但DrawAwardVO没有，那么就会忽略这个属性【默认是WARN编译时警告】
//unmappedSourcePolicy = ReportingPolicy.IGNORE  比如从DrawAwardVO 转换到 AwardDTO ，如果DrawAwardVO有某属性但AwardDTO没有，那么就会忽略这个属性【默认是WARN编译时警告】
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE)
public interface AwardMapping extends IMapping<DrawAwardVO, AwardDTO> {
    //@Mapping 为指定某些特殊映射的注解，没有指定的内容，当源对象与 目标对象拥有一样的属性时会自动转换
    @Mapping(target = "userId", source = "uId")
    @Override
    AwardDTO sourceToTarget(DrawAwardVO var1);

    @Override
    DrawAwardVO targetToSource(AwardDTO var1);

}
